package com.p3c.mysql;

/**
 * 建表规约
 *
 * <p>1,表达是否概念的字段，必须使用is_XXX的方式命名，数据类型是unsigned tinyint(1表示是，0表示否) 说明，任何字段如果为非负数，则必须是unsigned。
 *
 * <p>2，表名，字段名必须使用小写字母或数字，禁止出现数字开关，禁止两个下画线中间只出现数字。数据库字段名的修改代价很大， 因为无法进行预发布，所以字段名称需要慎重考滤 说明:
 * Mysql在windows下不区分大小写，但在Linux下默认区分大小写，因此数据库名、表名、字段名都不允许出现大写字母，避免节外生枝
 *
 * <p>3，表名不使用复数名词 表名应该仅仅表示表里的实体内容，不应该表示实体的数量，对于DO类名也是单数形式，符合表达习惯
 *
 * <p>4，禁止保留字，如desc,range,match,delayed等，请参考Mysql官方保留字
 *
 * <p>5，主键索引名为Pk_字段名，唯一索引名为UK_字段名，普通索引名则为inx_字段名。 说明pk即为primary key;UK_即为unique key; inx_即index的简称。
 *
 * <p>6，小数类型为decimal,禁止使用float和double。
 * 在存储的时候，float和double存在精度损失的问题，很可在比较值的时候，得到不正确的结果。如果存在数据范围超过decimal的范围，建议将数据拍成整数和小数并分开存储
 *
 * <p>7,如果存储的字符串长度几乎相等，则应使用char定长字符串类型。
 *
 * <p>8，varchar是可变长的字符串，不预先分配存储空间，长度不要超过5000个字符，如果存储长度大于此值
 * ，则就定义字段类型为text，独立出来一张表，用主键来进行对应，避免影响其他字段的索引效率。
 *
 * <p>9，表必备三字段:id,gmt_create,gmt_modified。 其中id必为主键，类型为unisigned
 * bigint单表时自增，步长为1。gmt_create和gmt_modified的类型均为date_time类型，前者现在时表示主动创建，后者过去分词表示被动更新
 *
 * 10,表名最好加上“业务名称_表的作用”
 *
 * 11,库名与应用名称尽量一致
 *
 * 12，当修改字段含义或者对字段表示的状态追加时，但必须考滤数据一致。冗余字段应遵循：
 * 12.1）不是频繁修改的字段
 * 12.2）不是varchar的超长字段，更不能是text字段
 *
 * 13，当单表数超过500万行或者单表容量超过2G时，才推荐进行分库分表，
 * 如果预计三年后的数据量无法达到这个级别，请不要在创建 表时就分库分表。
 *
 * 14，设置适合的字符存储长度。不但可以节约数据库表的空间和索引存储，更重要的是能够 提升 检索的速度。
 *
 * @author liujun
 * @version 0.0.1
 * @date 2018/09/04
 */
public class AlibabaMysql {}
